#ifndef IRSYNTH_H
#define	IRSYNTH_H

 #ifdef __cplusplus
 extern "C" {
 #endif 

#include "Translation.h"
#include "../BMC.h"
#include "../Context/ExeContext.h"
#include "../../6502.h"
     
typedef struct{
    const char* (*InstructionPtr)();
    __AddrModes AddressingMode;
    uint8_t Size;
    uint8_t OpCycles;    
    uint8_t ScanData;
    uint32_t LastEffectiveAddressInstruction;
} BISSynthData;

typedef enum{
    BISSF_MACROS = 0x01,
    BISSF_PRECOMPILED = 0x02,
    BISSF_INCOMPLETE = 0x04,
    BISSF_JUMPTABLE = 0x08
} BISS_FLAGS;

//This function synthesizes a BMC into a C string that is used to
//generate Host Machine code through JIT compilation.
char* BIS_Synthesize(BMC* Block, uint32_t Flags, ExeContext *InitialContext);

#ifdef __cplusplus
 }
#endif

#endif	/* IRSYNTH_H */

